package version2024.medium;

import java.util.Scanner;

/**
 * @author sunhl
 * @Description: HJ29 字符串加解密  字符串
 * @Date: created in 2024/12/28 星期六 23:31
 * @Modified By:
 */
public class HJ29_StringEncryptionDecryption {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);


        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            // 待加密字符串
            String toEncode = in.nextLine();
            // 待解密字符串
            String toDecode = in.nextLine();

            System.out.println(encode(toEncode));
            System.out.println(decode(toDecode));
        }
    }

    // 加密方法
    public static String encode(String code) {
        char[] t = code.toCharArray();
        for (int i = 0; i < t.length; i++) {
            char ti = t[i];
            if (ti >= 'a' && ti < 'z') {
                // 字符大小写的转换可以直接通过加减完成
                t[i] = (char) (ti - 'a' + 'A' + 1);
            } else if (ti == 'z') {
                t[i] = 'A';
            } else if (ti >= 'A' && ti < 'Z') {
                t[i] = (char) (ti - 'A' + 'a' + 1);
            } else if (ti == 'Z') {
                t[i] = 'a';
            } else if (ti >= '0' && ti < '9') {
                // 不能用加一再对十取余的方法，数字的ASCII表从48开始，
                // 比如0加1取余就是对应ASCII码为9的字符了
                t[i] = (char) (ti + 1);
            } else if (ti == '9') {
                t[i] = '0';
            }
        }

        return String.valueOf(t);
    }

    // 解密方法
    public static String decode(String code) {
        char[] t = code.toCharArray();
        for (int i = 0; i < t.length; i++) {
            char ti = t[i];
            if (ti > 'a' && ti <= 'z') {
                t[i] = (char) (ti - 'a' + 'A' - 1);
            } else if (ti == 'a') {
                t[i] = 'Z';
            } else if (ti > 'A' && ti <= 'Z') {
                t[i] = (char) (ti - 'A' + 'a' - 1);
            } else if (ti == 'A') {
                t[i] = 'z';
            } else if (ti > '0' && ti <= '9') {
                t[i] = (char) (ti - 1);
            } else if (ti == '0') {
                t[i] = '9';
            }
        }

        return String.valueOf(t);
    }
}
